package cinvestav.adviseme.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cinvestav.adviseme.databasemodel.ILugarAgregadoDB;
import cinvestav.adviseme.databasemodel.LugarAgregadoDB;
import cinvestav.adviseme.datamodel.Lugar;
import cinvestav.adviseme.datamodel.LugarAgregado;
import cinvestav.adviseme.datamodel.Persona;
import cinvestav.adviseme.util.DBException;
import cinvestav.adviseme.util.DataBaseDictionary;

public class LugarAgregadoController implements ILugarAgregadoController{

	protected ILugarAgregadoDB lugarAgregadoDB;
	
	
	
	public LugarAgregadoController() throws DBException {
		lugarAgregadoDB = new LugarAgregadoDB();
	}

	@Override
	public ILugarAgregadoDB getLugarAgregadoDB() {
		return lugarAgregadoDB;
	}

	@Override
	public void setLugarAgregadoDB(ILugarAgregadoDB lugarAgregadoDB) {
		this.lugarAgregadoDB = lugarAgregadoDB;
		
	}

	@Override
	public List<LugarAgregado> getAll(Persona persona) throws DBException {
		/*TipoLugar tipo;
		LinkedList<LugarAgregado> lugaresAgregados = new LinkedList<LugarAgregado>();
		LugarAgregado lugarAgregado;
		Lugar lugar;
		Persona persona;
		
		lugarAgregado = new LugarAgregado();
		tipo = new TipoLugar();
		tipo.setId(0);
		tipo.setDescripcion("Plaza Comercial");
		
		lugar = new Lugar();
		lugar.setId(1);
		lugar.setNombre("Antara");
		lugar.setDescripcion("Es muy bonito, pero las tiendas son caras");
		lugar.setLatitud(19.1034);
		lugar.setLongitud(20.13414);
		lugar.setTipo(tipo);
				
		persona = new Persona();
		persona.setNombrePersona("Javier");
		persona.setApellidoPaterno("Silva");
		lugarAgregado.setFecha(new Date(System.currentTimeMillis()).toString());
		lugarAgregado.setId(0);
		
		lugarAgregado.setLugar(lugar);
		lugarAgregado.setPersona(persona);
		lugaresAgregados.add(lugarAgregado);
		
		
		lugarAgregado = new LugarAgregado();
		lugar = new Lugar();
		lugar.setId(2);
		lugar.setNombre("Mundo E");
		lugar.setDescripcion("Una de las plazas mas grandes, puedes encontrar lo que necesites!");
		lugar.setLatitud(45.349);
		lugar.setLongitud(56.314);
		lugar.setTipo(tipo);
		
		
		persona = new Persona();
		persona.setNombrePersona("Edgar");
		persona.setApellidoPaterno("Olvera");
		lugarAgregado.setFecha(new Date(System.currentTimeMillis()).toString());
		lugarAgregado.setId(1);
		
		lugarAgregado.setLugar(lugar);
		lugarAgregado.setPersona(persona);
		lugaresAgregados.add(lugarAgregado);
		
		
		lugarAgregado = new LugarAgregado();
		lugar = new Lugar();
		lugar.setId(3);
		lugar.setNombre("Plaza Lindavista");
		lugar.setDescripcion("Muy pequeña, pero los precios son accesibles");
		lugar.setLatitud(56.98324);
		lugar.setLongitud(46.34);
		lugar.setTipo(tipo);
		
		persona = new Persona();
		persona.setNombrePersona("Selene");
		persona.setApellidoPaterno("Hernandez");
		lugarAgregado.setFecha(new Date(System.currentTimeMillis()).toString());
		lugarAgregado.setId(2);
		
		lugarAgregado.setLugar(lugar);
		lugarAgregado.setPersona(persona);
		lugaresAgregados.add(lugarAgregado);
		
		
		lugarAgregado = new LugarAgregado();
		tipo = new TipoLugar();
		tipo.setId(1);
		tipo.setDescripcion("Bar");
		lugar = new Lugar();
		lugar.setId(4);
		lugar.setNombre("Tequilas");
		lugar.setDescripcion("El ambiente es muy relajado, ponen musica de todo tipo");
		lugar.setLatitud(79.034);
		lugar.setLongitud(80.174);
		lugar.setTipo(tipo);
		
		persona = new Persona();
		persona.setNombrePersona("Victor");
		persona.setApellidoPaterno("Zaragoza");
		lugarAgregado.setFecha(new Date(System.currentTimeMillis()).toString());
		lugarAgregado.setId(3);
		
		lugarAgregado.setLugar(lugar);
		lugarAgregado.setPersona(persona);
		lugaresAgregados.add(lugarAgregado);
		
		lugar = new Lugar();
		lugar.setId(5);
		lugar.setNombre("Mambo Cafe");
		lugar.setDescripcion("Ambiente tropical, de lo mejor para practicar Salsa!");
		lugar.setLatitud(32.945235);
		lugar.setLongitud(56.85);
		lugar.setTipo(tipo);
		persona = new Persona();
		persona.setNombrePersona("Daniela");
		persona.setApellidoPaterno("Martinez");
		lugarAgregado.setFecha(new Date(System.currentTimeMillis()).toString());
		lugarAgregado.setId(3);
		
		lugarAgregado.setLugar(lugar);
		lugarAgregado.setPersona(persona);
		lugaresAgregados.add(lugarAgregado);
		
		
		lugar = new Lugar();
		lugar.setId(6);
		lugar.setNombre("Avalon");
		lugar.setDescripcion("Ponen pura electronica, barra libre de botella $350");
		lugar.setLatitud(57.664);
		lugar.setLongitud(89.714);
		lugar.setTipo(tipo);
		persona = new Persona();
		persona.setNombrePersona("Segio");
		persona.setApellidoPaterno("Altamirano");
		lugarAgregado.setFecha(new Date(System.currentTimeMillis()).toString());
		lugarAgregado.setId(3);
		
		lugarAgregado.setLugar(lugar);
		lugarAgregado.setPersona(persona);
		lugaresAgregados.add(lugarAgregado);*/
		Map <String,String[]> queryMap = new HashMap<String,String[]>();
		String values[] = new String[3];
		
		values[0] = String.valueOf(persona.getId());
		values[1] = DataBaseDictionary.COLUMN_TYPE_COMENTARIO_ID_PERSONA;
		values[2] = DataBaseDictionary.ALIAS_PERSONALUGAR;
		
		queryMap.put(DataBaseDictionary.COLUMN_FILTRO_NAME_COMENTARIO_ID_PERSONA, values);
		
		return lugarAgregadoDB.getByFiter(queryMap);
	}

	@Override
	public List<LugarAgregado> getByFilters(Map<String, String[]> filtros)
			throws DBException {
		// TODO Auto-generated method stub
		return lugarAgregadoDB.getByFiter(filtros);
	}

	@Override
	public Boolean delete(LugarAgregado lugarAgregado) throws DBException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Lugar insert(LugarAgregado lugarAgregado) throws DBException {
		// TODO Auto-generated method stub
		return lugarAgregadoDB.insert(lugarAgregado);
	}

}
